//package Test;
//
//import java.util.Random;
//import java.util.Scanner;
//
///**
// * @author shy_black
// * @date 2019/8/10 20:11
// * @Description:
// */
//
//
//public class tt {
//
//    /**
//     * 求超大整数的和
//     *
//     * @param num1
//     * @param num2
//     * @return
//     */
//    public static String bigNumberSumBetter(String num1, String num2) {
//        char sign = '+';
//        char sign1 = num1.charAt(0);
//        char sign2 = num2.charAt(0);
//
//        String number1 = "";
//        String number2 = "";
//
//        // 去符号位操作
//        if (sign1 == '-' || sign1 == '+') {
//            number1 = num1.substring(1);
//        } else {
//            sign1 = '+';
//            number1 = num1;
//        }
//        // 去符号位操作
//        if (sign2 == '-' || sign2 == '+') {
//            number2 = num2.substring(1);
//        } else {
//            sign2 = '+';
//            number2 = num2;
//        }
//
//        boolean isDig1 = number1.matches("[1-9][0-9]*");
//        boolean isDig2 = number2.matches("[1-9][0-9]*");
//        if (!isDig1 || !isDig2) {
//            throw new NumberFormatException("输入的数据不是正确的格式的整数");
//        }
//
//        //两个数的长度
//        int length1 = number1.length();
//        int length2 = number2.length();
//        int len = length1 >= length2 ? length1 + 1 : length2 + 1;
//
//        StringBuffer number1Buffer = new StringBuffer();
//        StringBuffer number2Buffer = new StringBuffer();
//        //扩展数据的长度,使它们的长度一样
//        if (length1 > length2) {
//            for (int i = 0; i < length1 - length2; i++) {
//                number2Buffer.append("0");
//            }
//        } else if (length1 < length2) {
//            for (int i = 0; i < length2 - length1; i++) {
//                number1Buffer.append("0");
//            }
//        }
//
//        number1Buffer.append(number1);
//        number2Buffer.append(number2);
//
//        char[] chars1 = number1Buffer.reverse().toString().toCharArray();
//        char[] chars2 = number2Buffer.reverse().toString().toCharArray();
//        //存储每位相加的结果
//        int[] result = new int[len];
//        //同号相加
//        if (sign1 == sign2) {
//            sign = sign1;
//            for (int i = 0; i < len - 1; i++) {
//                result[i] = (chars1[i] - '0') + (chars2[i] - '0');
//            }
//
//            // 处理进位
//            for (int i = 0; i < len; i++) {
//                if (result[i] >= 10) {
//                    result[i + 1] += result[i] / 10;
//                    result[i] = result[i] % 10;
//                }
//            }
//        } else {
//            // 拿大的数减去小的数
//            boolean lager = number1.compareTo(number2) > 0 ? true : false;
//            if (lager) {
//                sign = sign1;
//                for (int i = 0; i < len - 1; i++) {
//                    result[i] = (chars1[i] - '0') - (chars2[i] - '0');
//                }
//            } else {
//                sign = sign2;
//                for (int i = 0; i < len - 1; i++) {
//                    result[i] = (chars2[i] - '0') - (chars1[i] - '0');
//                }
//            }
//
//            // 处理借位
//            for (int i = 0; i < len; i++) {
//                if (result[i] < 0) {
//                    result[i] += 10;
//                    result[i + 1]--;
//                }
//            }
//        }
//
//        // 结果没有进位时的0处理
//        boolean flag = true;
//        StringBuffer resultStr = new StringBuffer();
//
//        for (int i = result.length - 1; i >= 0; i--) {
//            if (result[i] == 0 && flag) {
//                continue;
//            }
//            flag = false;
//            resultStr.append(result[i]);
//        }
//
//        // 符号处理
//        if (sign == '-') {
//            return "-" + resultStr.toString();
//        } else {
//            return resultStr.toString();
//        }
//    }
//}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//    public static String add(String n1, String n2){
//        StringBuilder result = new StringBuilder();
//
//        // 反转字符串
//        String rn1 = new StringBuilder(n1).reverse().toString();
//        String rn2 = new StringBuilder(n2).reverse().toString();
//
//        int len1 = rn1.length();
//        int len2 = rn2.length();
//
//        int maxLen = len1 > len2 ? len1 : len2;
//
//        boolean nOverFlow = false;// 是否越界
//        int nTakeOver = 0;// 溢出数量
//
//        // 把两个字符串补齐，即短字符串的高位用0补齐
//        if(len1 < len2){
//            for(int i = len1; i < len2; i++){
//                rn1 += "0";
//            }
//        }else{
//            for(int i = len2; i < len1; i++){
//                rn2 += "0";
//            }
//        }
//
//        // 把两个正整数相加，一位一位的加 并加上进位
//        for(int i = 0; i < maxLen; i++){
//            int nSum = Integer.parseInt(rn1.charAt(i) + "") + Integer.parseInt(rn2.charAt(i) + "");
//            nSum = nSum + nTakeOver;// 加上前一位的进位
//
//            if(nSum >= 10){
//                if(i == maxLen - 1){// 已经计算到最后一位了
//                    nOverFlow = true;
//                }
//
//                nTakeOver = 1;//溢出了
//                result.append(nSum - 10);
//            }else{
//                nTakeOver = 0;// 没溢出
//                result.append(nSum);
//            }
//        }
//
//        // 如果溢出的话 表示位增加了
//        if(nOverFlow){
//            result.append(nTakeOver);
//        }
//
//        return result.reverse().toString();
//    }
//}
